# locust777



//                        写一个函数返回参数二进制中 1 的个数


////1.
//#include<stdio.h>
//#include<windows.h>
//
//int count_num_of_1(int n)
//{
//	int count = 0;
//	while(n)
//	{
//		if((n % 2) == 1)
//		{
//			count++;
//		}
//		n /= 2;
//	}
//	return count;
//}
//
////-1
////10000000000000000000000000000001
////11111111111111111111111111111110
////11111111111111111111111111111111
//
//int main()
//{
//	int num = 0;
//	scanf("%d",&num);
//
//	printf("%d\n", count_num_of_1(num));
//
//
//	system("pause");
//	return 0;
//}


//1234
//1234%10 = 4                   二进制的每一位
//1234/10 =123                  %2
//                              /2
//123%10 = 3                     
//123/10 = 12
//
//12%10 = 2                     11 - 10 进制数数字
//12/10 = 1                     1011
//                              11%2=1
//1%10 = 1                      11/2=5
//1/10 = 0                      101
//                              5%2=1
//							  5/2=2
//							  10
//							  2%2=0
//							  2/2=1
//							  1%2=1
//
//							  1/2=0




////2.可以输出负数
//#include<stdio.h>
//#include<windows.h>
//
//int count_num_of_1(int n)
//{
//	int i = 0;
//	int count = 0;
//	for(i = 0;i < 32;i++)
//	{
//		if(( (n >> i) & 1) == 1)
//		{
//			count++;
//		}
//	}
//	return count;
//}
//
//
//int main()
//{
//	int num = 0;
//	scanf("%d",&num);
//
//	//int n = count_num_of_1(num);
//	//printf("%d\n",n);
//	printf("%d\n",count_num_of_1(num));
//
//	system("pause");
//	return 0;
//}



//n = 15
//n = n&(n-1)
//1111 n
//1110 n-1
//1110 n
//1101 n-1
//1100 n
//1011 n-1
//1000 n
//0111 n-1
//0000 n

//#include<stdio.h>
//#include<windows.h>
//
//int count_num_of_1(int n)
//{
//	int count = 0;
//	while(n)
//	{
//	n = n & (n - 1);
//	count++;
//	
//	}
//	return count;
//}
//
//
//int main()
//{
//	int num = 0;
//	scanf("%d",&num);
//
//	//int n = count_num_of_1(num);
//	//printf("%d\n",n);
//	printf("%d\n",count_num_of_1(num));
//
//	system("pause");
//	return 0;
//}
//
//
//
//int count_num_of_1(int n)
//{
//	int count = 0;                            IO型
//	while(n)                                  //输入
//	{                                         //计算
//		if((n % 2) == 1)                      //输出
//		{
//			count++;
//		}                                     接口型
//		n /= 2;                               //只需要完成接口函数
//	}
//	return count;
//}


//
//牛客网 - 笔试
//
//leetcode


//如果要判断一个数是不是2的n次方
//
//2^1
//10
//2^2
//100
//2^3
//1000
//


//#include<stdio.h>
//#include<windows.h>
//int count_diff_bit(int m,int n)
//{
//	int count = 0;
//	int i = 0;
//	for(i = 0;i < 32; i++)
//	{
//		if(( (m >> i) & 1) != ((n >> i) & 1))
//		{
//			count++;
//		}
//	
//	}
//	return count;
//}


//#include<stdio.h>
//#include<windows.h>
//int count_diff_bit(int m,int n)     //修正
//{
//	int count = 0;
//	//^ 异或操作符
//	//相同为0，相异为1
//	int ret = m^n;
//	//统计一下ret中二进制位有几个1
//	while(ret)
//	{
//		ret = ret & (ret - 1);
//		count++;
//	}
//	return count;
//}
//
//
//int main()
//{
//	int m = 0;
//	int n = 0;
//	scanf("%d %d",&m,&n);
//	int ret = count_diff_bit(m,n);
//	printf("%d\n",ret);
//
//	system("pasue");
//	return 0;
//}


//获得一个整数二进制序列中所有的偶数位和奇数位，分别打印出二进制序列

//10
//00000000000000000000000000001010
//

//c + STL(标准模板库)
//JAVA
//
////
//#include<stdio.h>
//#include<windows.h>
//int main()
//{
//	int i = 0;
//	int num = 0;
//	scanf("%d",&num);
//
//	//获取奇数位的数字
//	for(i = 30;i >= 0;i -= 2)
//	{
//		printf("%d ",(num >> i) & 1);
//	}
//	printf("\n");
//
//	//获取偶数位的数字
//	for(i = 31;i >= 1;i -= 2)
//	{
//		printf("%d ",(num > i) & 1);
//	}
//
//	system("pause");
//	return 0;
//}